Date.prototype.format = function (fmt) {
    var o = {
        "M+": this.getMonth() + 1,
        "d+": this.getDate(),
        "h+": this.getHours(),
        "m+": this.getMinutes(),
        "s+": this.getSeconds(),
        "q+": Math.floor((this.getMonth() + 3) / 3),
        "S": this.getMilliseconds()
    };
    if (/(y+)/.test(fmt))
        fmt = fmt.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    for (var k in o)
        if (new RegExp("(" + k + ")").test(fmt))
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length === 1) ? (o[k]) : (("00" + o[k]).substr(("" + o[k]).length)));
    return fmt;
}

function getParams (name) {
    let search = window.location.search
    let reg = /(\w+)=(\w+)/g
    let params = {}
    search.replace(reg,  function ($, $1, $2) {
        params[$1] = $2
    })
    return params[name]
}

// 获取商户订单号
function getCommonOrder (prefix) {
    let str = prefix + new Date().format('yyyyMMddhhmmssS')
    for (let i = 0; i < 7; i++) {
        str = str + Math.round(Math.random()*10)
    }
    return str
}

// 下单回调，供客户端主动调用，res为下单结果报文
function orderResult(res) {
    res = JSON.stringify(res)
    res = JSON.parse(res)
    if (res.errCode === 'SUCCESS') {
        // 调用客户端提供的支付指令方法
        window.webkit.messageHandlers.sendPayRequestWithResponse.postMessage(res.appPayRequest)
    } else {
        // 下单失败处理
        alert('下单失败')
    }
}

// 支付回调，供客户端主动调用，res为支付动作完成后客户端传入js的内容
function payResult(res) {
    res = JSON.stringify(res)
    res = JSON.parse(res)
    if (res.resultCode == '0000'){
        //支付成功
    }
    alert('resultCode=' + res.resultCode + '\n' + 'resultInfo=' + res.resultInfo)
}

$(function () {
    // 从链接获取渠道channel
    let channel = getParams('channel') // 00云闪付支付; 01微信支付; 02支付宝支付; 03支付宝小程序支付
    if (!channel) {
        alert('渠道channel未知')
        return
    }
    switch (channel) {
        case '00':
            $('.union-pay').show();
            $('.notifyUrl').show();
            break
        case '01':
            $('.notifyUrl').show();
            break
        default: break
    }


    // 初始化值
    $('#requestTimestamp').val(new Date().format('yyyy-MM-dd hh:mm:ss')) // 请求时间初始化
    $('#merOrderId').val(getCommonOrder('5000')) // 商户订单号初始化
    $('#tid').val(function () { // 终端号初始化
        switch (channel) {
            case '00': return '48020000';
            case '01': return '70162265';
            case '02': return '12345678';
            case '03': return '12345678';
            default: return ''
        }
    })
    $('#instMid').val('APPDEFAULT') // 机构号初始化
    $('#totalAmount').val(1) // 总金额初始化
    $('#msgSrc').val('WWW.PRODTEST.COM') // 消息来源初始化
    $('#urlStr').val('https://qr.chinaums.com/netpay-route-server/api/') // 环境初始化

    // 分账标记切换事件
    $('#divisionFlag').click(function () {
        if ($(this).attr('checked')) {
            $(this).attr('checked', false);
            $('.switch_on span').attr('class', 'input')
            $('.block').hide()
            $('#child_mid').val('')
            $('#child_merOrderId').val('')
            $('#child_totalAmount').val('')
            $('textarea').val('').hide()
        } else {
            $(this).attr('checked', true);
            $('.switch_on span').attr('class', 'input checked')
            $('.block').show()
        }
    })

    // 添加分账
    $('#add').click(function () {
        let child_mid = $('#child_mid').val()
        let child_merOrderId = $('#child_merOrderId').val()
        let child_totalAmount = $('#child_totalAmount').val()
        let obj = {}
        if (child_mid || child_merOrderId || child_totalAmount) {
            $('textarea').show()
            obj.mid = child_mid || undefined
            obj.merOrderId = child_merOrderId || undefined
            obj.totalAmount = child_totalAmount || undefined
            let valueArr = $('textarea').val()
            valueArr = valueArr ? JSON.parse(valueArr) : []
            valueArr.push(obj)
            $('textarea').val(JSON.stringify(valueArr))
        }
    })

    // 支付下单
    $('#button').click(function () {
        let params = {}
        // 必选参数
        params.requestTimestamp = $('#requestTimestamp').val()
        if (params.requestTimestamp === '') {
            alert('请求时间不能为空')
            return
        }
        params.merOrderId = $('#merOrderId').val()
        if (params.merOrderId === '') {
            alert('商户订单号不能为空')
            return
        }
        params.mid = $('#mid').val()
        if (params.mid === '') {
            alert('商户号不能为空')
            return
        }
        params.tid = $('#tid').val()
        if (params.tid === '') {
            alert('终端号不能为空')
            return
        }
        params.instMid = $('#instMid').val()
        if (params.instMid === '') {
            alert('机构商户号不能为空')
            return
        }
        params.totalAmount = $('#totalAmount').val()
        if (params.tid === '') {
            alert('总金额不能为空')
            return
        }
        params.msgSrc = $('#msgSrc').val()
        if (params.msgSrc === '') {
            alert('消息来源不能为空')
            return
        }
        params.secureTransaction = $('#secureTrans').val()
        params.channel = channel // 00云闪付支付; 01微信支付; 02支付宝支付; 03支付宝小程序支付
        params.urlStr = $('#urlStr').val()
        if (params.urlStr === '') {
            alert('环境地址不能为空')
            return
        }

        // 可选参数
        if (channel === '00') {
            params.bankCardNo = $('#bankCardNo').val() || undefined
            params.supportBank = $('#supportBank').val() || undefined
            params.invokeType = $('#invokeType').val() || undefined
            params.name = $('#name').val() || undefined
            params.certType = $('#certType').val() || undefined
            params.certNo = $('#certNo').val() || undefined
            params.fixBuyer = $('#fixBuyer').val() || undefined
        }
        params.orderDesc = $('#orderDesc').val() || undefined
        if (channel === '00' || channel === '01') {
            params.notifyUrl = $('#notifyUrl').val() || undefined
        }
        params.srcReserve = $('#srcReserve').val() || undefined
        params.goods = $('#goods').val() || undefined
        params.divisionFlag = $('#divisionFlag').attr('checked') ? true : false
        params.platformAmount = $('#platformAmount').val() || undefined
        if (params.divisionFlag && !params.platformAmount) {
            alert('分账金额不能为空')
            return
        }
        params.subOrders = $('textarea').val() || null
        console.log(params)
        // 调用客户端提供的下单方法
        window.webkit.messageHandlers.UmsUnifyPayOrderRequest.postMessage({params})
    })
})
